#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""
GomerX机器人LED灯控制示例程序

本程序演示如何使用LED控制模块控制GomerX机器人前方的LED灯。
包括基本开关、颜色设置、亮度调节和各种灯光效果。
"""

import time
import sys
import os

# 添加项目根目录到系统路径
current_dir = os.path.dirname(os.path.abspath(__file__))
parent_dir = os.path.dirname(current_dir)
sys.path.insert(0, parent_dir)

from modules.led import LEDController
from config_manager import ConfigManager


def main():
    """主函数"""
    print("GomerX机器人LED灯控制示例")
    print("=" * 40)
    
    # 创建配置管理器
    config_manager = ConfigManager()
    
    # 创建LED控制器
    led = LEDController(config_manager.get_led_config())
    
    try:
        # 连接LED控制器
        if not led.connect():
            print("LED控制器连接失败")
            return
        
        print("LED控制器连接成功")
        
        # 基本开关控制
        print("\n1. 基本开关控制")
        print("打开LED灯...")
        led.turn_on()
        time.sleep(2)
        
        print("关闭LED灯...")
        led.turn_off()
        time.sleep(2)
        
        # 颜色控制
        print("\n2. 颜色控制")
        colors = [
            ("红色", [255, 0, 0]),
            ("绿色", [0, 255, 0]),
            ("蓝色", [0, 0, 255]),
            ("黄色", [255, 255, 0]),
            ("紫色", [255, 0, 255]),
            ("青色", [0, 255, 255]),
            ("白色", [255, 255, 255])
        ]
        
        for color_name, rgb in colors:
            print(f"设置颜色为{color_name}...")
            led.set_color(rgb)
            led.turn_on()
            time.sleep(1)
        
        # 亮度控制
        print("\n3. 亮度控制")
        led.set_color([255, 255, 255])  # 白色
        for brightness in [25, 50, 75, 100, 150, 200, 255]:
            print(f"设置亮度为{brightness}...")
            led.set_brightness(brightness)
            time.sleep(0.5)
        
        # 闪烁效果
        print("\n4. 闪烁效果")
        led.set_color([255, 0, 0])  # 红色
        led.set_brightness(255)
        print("红色闪烁...")
        led.blink(5)  # 闪烁5次
        time.sleep(1)
        
        # 警灯效果
        print("\n5. 警灯效果")
        print("警灯闪烁...")
        led.police_lights(5)  # 警灯闪烁5次
        time.sleep(1)
        
        # 彩虹效果
        print("\n6. 彩虹效果")
        print("彩虹渐变...")
        led.rainbow(1)  # 彩虹效果1次
        time.sleep(1)
        
        # 关闭LED
        print("\n关闭LED灯...")
        led.turn_off()
        
        # 显示LED状态
        print("\nLED状态:")
        status = led.get_status()
        print(f"连接状态: {'已连接' if status['is_connected'] else '未连接'}")
        print(f"开关状态: {'开启' if status['is_on'] else '关闭'}")
        print(f"颜色: RGB({status['color'][0]}, {status['color'][1]}, {status['color'][2]})")
        print(f"亮度: {status['brightness']}")
        
    except KeyboardInterrupt:
        print("\n程序被用户中断")
    except Exception as e:
        print(f"发生错误: {str(e)}")
    finally:
        # 断开LED控制器连接
        led.disconnect()
        print("LED控制器已断开连接")


if __name__ == "__main__":
    main()